// easy

// 给定一个链表的头节点head
// 要求判断该链表是否为回文链表

// 思路： 数组 + 双指针
// 1. 利用数组，将链表元素依次存入，2. 然后再使用两个指针，一个指向数组开始位置，一个指向数组结束位置， 3. 依次判断首尾对应元素是否相等，如果都相等，则为回文链表
const { ListNode, LinkedList } = require('../../1. 链表基础/1. 建立线性链表')

function isPalindrome(head) {
    let nodes = []
    let p1 = head
    while (p1 !== null) {
        nodes.push(p1.val)
        p1 = p1.next
    }
    for (let i = 0, j = nodes.length - 1; i < j; i++, --j) {
        if (nodes[i] !== nodes[j]) {
            return false
        }        
    }
    return true
}

let head = [1,2,2,1]
let node = new LinkedList(head)
console.log(isPalindrome(node.head))